﻿using BCEntity.TMS.MoveHouseConfig.MoveHouseSpecificationConfig;
using BCEntity.TMS.MoveHouseConfig.MoveHouseSpecificationConfigOverWrite;
using BCEntity.TMS.MoveHouseConfig.MoveHouseSpecificationServiceConfig;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace BCData.TMS.MoveHouseConfig.MoveHouseSpecificationConfigOverWrite
{
    public interface IMoveHouseSpecificationConfigOverWriteData
    {
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="moveHouseSpecificationConfigOverWriteId"></param>
        /// <returns></returns>
        Task<bool> DeleteAsync(long moveHouseSpecificationConfigOverWriteId);
        /// <summary>
        /// 获取
        /// </summary>
        /// <param name="moveHouseSpecificationConfigOverWriteId"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigOverWriteEntity> GetEntityAsync(long moveHouseSpecificationConfigOverWriteId);
        /// <summary>
        /// 获取
        /// </summary>
        /// <param name="moveHouseSpecificationConfigOverWriteId"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigViewEntity> GetEntityViewAsync(long moveHouseSpecificationConfigOverWriteId);

        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="moveHouseSpecificationConfigId">规格id</param>
        /// <param name="isEnable">是否可用</param>
        /// <returns></returns>
        Task<IEnumerable<MoveHouseSpecificationConfigOverWriteEntity>> GetList(long moveHouseSpecificationConfigId,bool? isEnable);

        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        Task<(IEnumerable<MoveHouseSpecificationConfigOverWriteEntity>, int)> GetListAsync(int pageIndex, int pageSize);

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigOverWriteEntity> InsertAsync(MoveHouseSpecificationConfigOverWriteEntity entity);
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigOverWriteEntity> UpdateAsync(MoveHouseSpecificationConfigOverWriteEntity entity);
        /// <summary>
        /// 获取记录
        /// </summary>
        /// <param name="moveHouseSpecificationConfigId"></param>
        /// <param name="provinceCode"></param>
        /// <param name="cityCode"></param>
        /// <param name="countyCode"></param>
        /// <param name="agentRecordId"></param>
        /// <returns></returns>
        Task<MoveHouseSpecificationConfigOverWriteEntity> GetEntityAsync(long moveHouseSpecificationConfigId, string provinceCode, string cityCode,
            string countyCode, long agentRecordId);
    }
}